import request from '../utils/request.js'

/**
 * 查询所有设备
 * @returns {Promise} - 返回设备列表
 */
export function getAllDevices() {
  return request({
    url: '/device/findAll',
    method: 'get'
  })
}

/**
 * 根据设备名称查询设备
 * @param {string} name - 设备名称
 * @returns {Promise} - 返回设备信息
 */
export function getDeviceByName(name) {
  return request({
    url: '/device/findByName',
    method: 'get',
    params: { name }
  })
}

/**
 * 根据设备名称模糊查询设备
 * @param {string} name - 设备名称关键字
 * @returns {Promise} - 返回匹配的设备列表
 */
export function getDevicesByNameLike(name) {
  return request({
    url: '/device/findByNameLike',
    method: 'get',
    params: { name }
  })
}

/**
 * 添加设备
 * @param {Object} data - 设备信息
 * @param {number} data.device_id - 设备ID
 * @param {string} data.name - 设备名称
 * @param {string} data.type - 设备类型
 * @param {string} data.status - 设备状态
 * @param {string} data.room - 房间位置
 * @returns {Promise} - 返回添加结果
 */
export function addDevice(data) {
  return request({
    url: '/device/add',
    method: 'post',
    data,
    headers: {
      'Content-Type': 'application/json'
    }
  })
}

/**
 * 更新设备信息
 * @param {Object} data - 设备信息
 * @param {string} data.id - MongoDB中的设备ID
 * @param {number} data.device_id - 设备ID
 * @param {string} data.name - 设备名称
 * @param {string} data.type - 设备类型
 * @param {string} data.status - 设备状态
 * @param {string} data.room - 房间位置
 * @returns {Promise} - 返回更新结果
 */
export function updateDevice(data) {
  return request({
    url: '/device/update',
    method: 'put',
    data,
    headers: {
      'Content-Type': 'application/json'
    }
  })
}

/**
 * 删除设备
 * @param {number} deviceId - 设备ID
 * @returns {Promise} - 返回删除结果
 */
export function deleteDeviceById(deviceId) {
  return request({
    url: `/device/deleteByDeviceId?deviceId=${deviceId}`,
    method: 'delete'
  })
}

/**
 * 更新设备名称
 * @param {number} deviceId - 设备ID
 * @param {string} name - 新设备名称
 * @returns {Promise} - 返回更新结果
 */
export function updateDeviceName(deviceId, name) {
  return request({
    url: `/device/name/${deviceId}?name=${name}`,
    method: 'put'
  })
}